Methods and systems for inter-application communication

ABSTRACT

A data processing method includes (a) executing a messaging application program and other application programs on a computer system; (b) analyzing text in each message handled by the messaging application program to identify textual data items in the message that can potentially be processed by the application programs; (c) displaying the analyzed messages to the user, such that each textual data item in the messages is visually marked and selectable by the user; (d) receiving an input from the user selecting a textual data item; (e) broadcasting information on the selected textual data item to the application programs; (f) determining independently through each of the application programs whether the broadcasted information is semantically relevant to that application program; and (g) if so, processing the information through the application program and displaying results to the user.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.16/738,693 filed on Jan. 9, 2020 entitled METHODS AND SYSTEMS FORINTER-APPLICATION COMMUNICATION, which claims priority from U.S.Provisional Patent Application No. 62/870,381 filed on Jul. 3, 2019entitled METHODS AND SYSTEMS FOR INTER-APPLICATION COMMUNICATION, bothof which are hereby incorporated by reference.

BACKGROUND

The present application relates generally to methods and systems forfacilitating communication among application programs running in acomputer system.

BRIEF SUMMARY OF THE DISCLOSURE

A computer system in accordance with one or more embodiments comprisesat least one processor; memory associated with the at least oneprocessor; a display; and a messaging application program and one ormore other application programs stored in the memory that can beexecuted by the at least one processor. Each of the messagingapplication program and the one or more other application programs arecapable of processing data and displaying data to a user of the computersystem on the display. The messaging application program enablesreal-time transmission of messages to and from the user. The computersystem is configured to: (a) execute the messaging application programand the one or more other application programs on a computer system; (b)analyze text in each message received by or to be sent by the user inthe messaging application program to identify one or more textual dataitems in the message that can potentially be processed by the one ormore other application programs; (c) display messages analyzed in (b) tothe user by the messaging application, wherein each textual data item inthe messages identified in step (b) is visually marked and selectable bythe user; (d) receive an input from the user selecting a textual dataitem in one of the messages; (e) broadcast information on the textualdata item selected by the user to the one or more other applicationprograms; (f) determine independently through each of the one or moreother application programs whether the information on the textual dataitem broadcast in step (e) is semantically relevant to that applicationprogram; and (g) when the information on the textual data item isdetermined to be semantically relevant to an application program,process the information on the textual data item through the applicationprogram and display results to the user.

A data processing method in accordance with one or more embodimentsincludes the steps of: (a) executing a messaging application program andone or more other application programs on a computer system, each of themessaging application program and the one or more other applicationprograms displaying data to a user of the computer system, wherein themessaging application program enables real-time transmission of messagesto and from the user; (b) analyzing text in each message received by orto be sent by the user in the messaging application program to identifyone or more textual data items in the message that can potentially beprocessed by the one or more other application programs; (c) displayingmessages analyzed in (b) to the user by the messaging application,wherein each textual data item in the messages identified in step (b) isvisually marked and selectable by the user; (d) receiving an input fromthe user selecting a textual data item in one of the messages; (e)broadcasting information on the textual data item selected by the userto the one or more other application programs; (f) determiningindependently through each of the one or more other application programswhether the information on the textual data item broadcast in step (e)is semantically relevant to that application program; and (g) when theinformation on the textual data item is determined to be semanticallyrelevant to an application program, processing the information on thetextual data item through the application program and displaying resultsto the user.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic illustration of an exemplary inter-applicationcommunication system in accordance with one or more embodiments.

FIG. 2 is a schematic illustration of an exemplary computer softwaresystem used in the inter-application communication system of FIG. 1.

FIGS. 3-5 are screenshots illustrating an exemplary inter-applicationcommunication process in accordance with one or more embodiments.

FIG. 6 is a flow chart illustrating an exemplary inter-applicationcommunication process in accordance with one or more embodiments.

DETAILED DESCRIPTION

U.S. Pat. No. 9,135,095 entitled METHODS AND SYSTEMS FORINTER-APPLICATION COMMUNICATION is assigned to the assignee of thepresent application and is incorporated by reference herein. That patentdiscloses methods and systems for enabling application programsexecuting on a computer system to share data with each other. A computersystem user can post a particular data item displayed by one applicationprogram on a virtual bulletin board. Other application programs runningon the computer system listen for posted data items. If an applicationprogram determines that a posted data item is relevant to thatapplication program, it automatically imports and processes the dataitem along with any needed other data associated with the data item, anddisplays the results to the user.

The inter-application communication system enables applicationdevelopers to create complex software systems from a large number ofrelatively small and simple individual application programs. Users canselect any particular combination of application programs to worktogether from many different possible combinations. Working withrelatively small and simple individual application programs rather thanlarger and significantly more complex programs allows system developersto greatly increase the speed of software development. Also, support andmaintenance costs can be reduced.

FIG. 1 is a simplified illustration of an exemplary inter-applicationcommunication system 100 in accordance with one or more embodiments. Thesystem 100 includes a computer system 102 operatively coupled to adisplay 104 and one or more user input devices 106, e.g., a keyboard ormouse. (Other configurations are also possible. For instance, the inputdevice can be incorporated in a touch screen display.) The computersystem 102 includes an operating system 108, on which a plurality ofapplication programs 110, 112, 114, 116, a Messaging application program117, and a Bulletin Board application program 118 can be executed. Inthis example, the user has selected this combination of fourapplications 110, 112, 114, 116 to run from a larger set of availableapplications (not shown). The application programs 110, 112, 114, 116,generate windows or panes 120, 122, 124, 126, respectively, on thecomputer display 104. The Messaging application 117 enables real-timeexchange of messages containing text among users or groups throughwindow 127.

The computer system 102 comprises any type of computing device or systemcapable of running application programs. The computer system 102comprises a user-operated device such as a personal computer (e.g., adesktop, notebook, or tablet computer), a workstation, a smart phone, ora personal digital assistant. The computer system 102 can also compriseone or more remote computers connected to a user-operated device over acommunications network (e.g., the Internet, a local area network, a widearea network, a wireless network, a cellular network, or somecombination thereof). The application programs can execute entirely onthe user-operated device, partly on the user-operated device and partlyon the one or more remote computers, or entirely on the one or moreremote computers.

FIG. 2 is a simplified block diagram illustrating an example of asoftware architecture in accordance with one or more embodiments. Eachof the application programs 110, 112, 114, 116 can communicate with theBulletin Board application program 118. When a user posts a textual dataitem on the Bulletin Board from the Messaging application 117 (as willbe discussed below), the Bulletin Board application 118 broadcasts thedata item to all the other applications running on the computer system102. The other applications listen for posted data items. If theydetermine that the posted data item is relevant, they automaticallyimport and process the data item (and any needed related data associatedwith the data item), and display the results to the user.

A Messaging application engine 128 is associated with the Messagingapplication 117. A natural language processing (NLP) engine 130 analyzesmessages handled by the Messaging application 117 using information indatabases 132, as will be discussed below.

The inter-application communication system enables the Messagingapplication 117 to send selected tagged data in messages to one or moreother applications 110, 112, 114, 116 on the computer system 102 via theBulletin Board application program 118 so that the other applicationscan analyze the data and, if relevant, process the data and displayresults to the user. The system thereby allows a recipient or sender ofa message in the Messaging application 117 to quickly and easily selectinformation in the message for processing by the other applications.

The following is a simple example illustrating an inter-applicationcommunication process for processing and displaying financial data inaccordance with one or more embodiments. FIG. 3 is an exemplaryscreenshot from the display 104 of the computer system 102 operated by auser (jsmith) for processing and displaying financial data. In thisexample, the user is running two applications: a Messaging application117 (depicted in window 127) and an application 110 comprising a PriceChart Application (depicted in window 120). The Messaging application117 displays a sequence of messages 134 containing text content sent bythe user to another person (or group) and messages 136 received by theuser from the other person (or group) in a chat conversation. Thecomputer system analyzes the messages and identifies particular textualdata items (shown underlined) contained in the messages that canpotentially be processed by other application programs. These textualdata items are tagged so that they can be clicked on (or otherwiseselected) by the user in order to automatically post the textual dataitems (or associated information) to the Bulletin Board application 118.The Bulletin Board application 118 receives the user-selected data itemand broadcasts it to all the other applications running on the computersystem 102. The other applications listen for posted data items. If theydetermine that the posted data item is relevant, they automaticallyimport and process the data item (and any needed related data associatedwith the data item), and display the results to the user.

In the FIG. 3 example, the user selects the textual data item 138(“Amazon”) in a message displayed by the Messaging application. Thesystem then automatically sends the selected textual data item 138 tothe Bulletin Board application 118. In this example, the Price ChartApplication 110 listens for data items broadcast by the Bulletin Boardapplication 118, determines whether the data posted is relevant to thePrice Chart Application 110. Relevance is determined based on whetherthe data is semantically relevant. For example, the Price ChartApplication 110 is configured to only act on semantic data having aspecified description (e.g., an account or security). In this case, thePrice Chart program 110 determines that “Amazon” refers to a security.After determining this data is relevant, the Price Chart application 110processes the data, e.g., by generating a chart 140 from the data, whichis then displayed to the user in window 120.

In further example, as shown in FIG. 4, if the user then selects anothertagged textual data item 142 (“IBM”) in the Messaging application 117,the Price Chart Application 110 generates a price chart for IBM anddisplays the chart 144 to the user in window 120.

FIG. 5 is a screenshot illustrating another exemplary use of theinter-application communication system. In this example, a user (kjones)is running four application programs on a computer system: a Messagingapplication 117 (depicted in window 127), a Security Detail application112 (depicted in window 122), a Search application 114 (depicted inwindow 124), and a Performance Chart application 116 (depicted in window126). The Messaging application 117 lists various text messages sent orreceived by the user or an organization. The Security Detail application112 can display detailed information on particular financial securitiesheld by a given client account. The Search application 114 can conduct adatabase search for additional information. The Performance Chartapplication 116 can generate and display a performance chart from clientaccount data. The user selects a tagged textual data item 150 from thedata displayed in the window of the Messaging application 117. In thisexample, the user has selected a particular client account (1440N6),resulting in the system posting the information on the client account inBulletin Board 118. The Security Detail application 112, the Searchapplication 114, and the Performance Chart application 116 each analyzethe posted information, determine that it is relevant, and accordinglyimport the data item 150 (and any needed related data) and process anddisplay the results. Specifically, the Search application 116 retrievesadditional account information related to the particular client account150 posted in the Bulletin Board and displays that information to theuser. The Securities Detail application 112 retrieves information oneach of the securities held in the posted client account and displaysthat information. In addition, the Performance Chart application 116generates a chart 152 indicating performance of the posted clientaccount and displays the results to the user.

The computer system 102 analyzes the messages handled by the Messagingapplication 117 to identify the textual data items for tagging based onwhether the textual data items could potentially be processed by anapplication program available to the user. In one or more embodiments,the computer system 102 uses natural language processing (NLP) andartificial intelligence to determine the probable meaning of text in themessages and whether any text items in the messages should be tagged. Inone or more embodiments, the NLP engine 130 receives the messages anddetermines whether the messages contain any text describing knowndefined entities and concepts in a universe of entities and conceptsstored in the databases 132. Non-limiting examples of such definedentities and concepts for financial applications include Issuers,Securities, Investment Managers, Consultants, Employees, Products, andsales activities.

Once the NLP engine 130 has analyzed the text, it returns to theMessaging application 117 any entities or concepts found with metadata,and identifies the text that should be tagged or visually marked (shownunderlined in the figures) to indicate that it is actionable. Forexample, “IBM” has a series of name or type: value pairs (e.g.,“Security”:“IBM”) for its identifiers in one or more databases. The NLPengine 130 instructs the Messaging application 117 to replace the word“IBM” in the message with “IBM”. The Messaging engine 128 therebyvisually identifies IBM as a clickable hotspot in window 127. TheMessaging application 117 transmits all associated name value pairs tothe Bulletin Board upon selection of IBM by the user, similar to ahyperlink in a browser. The Bulletin Board application then broadcaststhe data to all the other applications running on the computer system102. The other applications listen for posted data items. If theydetermine that the posted data item is relevant, they automaticallyimport and process the data item (and any needed related data associatedwith the data item), and display the results to the user.

FIG. 6 is a flowchart 200 illustrating an exemplary inter-applicationcommunication process in accordance with one or more embodiments.

At step 202, the Messaging application receives a text messagementioning “IBM” from a sender.

At step 204, the NLP engine associated with Messaging applicationreceives and analyzes the message to determine the probable meaning oftext. The NLP engine identifies “IBM” as a possible entity.

At step 206, the NLP engine determines if “IBM” is present in one ormore databases of defined entities and concepts. It finds “IBM” in adatabase, which specifies a type: value pair (Security:IBM) associatedwith IBM.

At step 208, the NLP engine sends the (Security:IBM) information foundin the database to Messaging application. The Messaging applicationengine 130 then replaces the word “IBM” in the message with “IBM” as aclickable hotspot.

At step 210, when the user of the Messaging application clicks on IBM,the Messaging application sends (Security:IBM) information to theBulletin Board application.

At step 212, the Bulletin Board application broadcasts the(Security:IBM) information to other applications running on the computersystem.

At step 214, other application programs running on the computer systemlisten for posted data items. If an application program determines thatSecurity:IBM is relevant to that application program, it automaticallyprocesses the data item along with any needed other data associated withthe data item, and displays the results to the user.

In this way, the inter-application communication system enablesrecipients or senders of messages in Messaging applications to quicklyand easily have information in the messages processed by variousapplications, so that they can quickly and easily access desiredinformation.

The processes of the inter-application communication system 100described above may be implemented in software, hardware, firmware, orany combination thereof. The processes are preferably implemented in oneor more computer programs executing on a programmable computer includinga processor, a storage medium readable by the processor (including,e.g., volatile and non-volatile memory and/or storage elements), andinput and output devices. Each computer program can be a set ofinstructions (program code) in a code module resident in the randomaccess memory of the computer. Until required by the computer, the setof instructions may be stored in another computer memory (e.g., in ahard disk drive, or in a removable memory such as an optical disk,external hard drive, memory card, or flash drive) or stored on anothercomputer system and downloaded via the Internet or other network.

Having thus described several illustrative embodiments, it is to beappreciated that various alterations, modifications, and improvementswill readily occur to those skilled in the art. Such alterations,modifications, and improvements are intended to form a part of thisdisclosure, and are intended to be within the spirit and scope of thisdisclosure. While some examples presented herein involve specificcombinations of functions or structural elements, it should beunderstood that those functions and elements may be combined in otherways according to the present disclosure to accomplish the same ordifferent objectives. In particular, acts, elements, and featuresdiscussed in connection with one embodiment are not intended to beexcluded from similar or other roles in other embodiments.

Additionally, elements and components described herein may be furtherdivided into additional components or joined together to form fewercomponents for performing the same functions. For example, the computersystem may comprise one or more physical machines, or virtual machinesrunning on one or more physical machines. In addition, the computersystem may comprise a cluster of computers or numerous distributedcomputers that are connected by the Internet or another network.

Accordingly, the foregoing description and attached drawings are by wayof example only, and are not intended to be limiting.

1. A data processing method, comprising the steps of: (a) executing amessaging application program and one or more other application programson a computer system, each of the messaging application program and theone or more other application programs displaying data to a user of thecomputer system, wherein the messaging application program enablesreal-time transmission of messages to and from the user; (b) analyzingtext in each message received by or to be sent by the user in themessaging application program to identify one or more textual data itemsin the message that can potentially be processed by the one or moreother application programs; (c) displaying messages analyzed in (b) tothe user by the messaging application, wherein each textual data item inthe messages identified in step (b) is visually marked and selectable bythe user; (d) receiving an input from the user selecting a textual dataitem in one of the messages; (e) broadcasting information on the textualdata item selected by the user to the one or more other applicationprograms; (f) determining independently through each of the one or moreother application programs whether the information on the textual dataitem broadcast in step (e) is semantically relevant to that applicationprogram; and (g) when the information on the textual data item isdetermined to be semantically relevant to an application program,processing the information on the textual data item through theapplication program and displaying results to the user.
 2. The method ofclaim 1, wherein analyzing text in each message received by or to besent by the user in step (b) is performed using natural languageprocessing.
 3. The method of claim 2, wherein the one or more textualdata items are identified in step (b) by searching for the one or moretextual data items in one or more databases of known entities orconcepts.
 4. The method of claim 3, wherein the information on eachtextual data item comprises a type:value pair associated with thetextual data item in the one or more databases.
 5. The method of claim3, wherein the data comprises financial data, and wherein the entitiesor concepts comprise Issuers, Securities, Investment Managers,Consultants, Employees, Products, or sales activities.
 6. The method ofclaim 5, wherein the one or more other application programs include atleast one of a Price Chart application, a Security Detail application, aSearch application, and a Performance Chart application.
 7. The methodof claim 1, wherein the one or more textual data items are visuallymarked by being underlined or shown in a different color or fontrelative to other text in the messages.
 8. The method of claim 1,wherein the textual data item selectable by the user comprises aclickable hotspot.
 9. The method of claim 1, wherein the computer systemcomprises a user-operated device and one or more remote computersconnected to the user-operated device over a communications network, andwherein the application programs execute entirely on the user-operateddevice, partly on the user-operated device and partly on the one or moreremote computers, or entirely on the one or more remote computers.
 10. Acomputer system, comprising: at least one processor; memory associatedwith the at least one processor; a display; and a messaging applicationprogram and one or more other application programs stored in the memorythat can be executed by the at least one processor, each of themessaging application program and the one or more other applicationprograms capable of processing data and displaying data to a user of thecomputer system on the display, wherein the messaging applicationprogram enables real-time transmission of messages to and from the user,wherein the computer system is configured to: (a) execute the messagingapplication program and the one or more other application programs on acomputer system; (b) analyze text in each message received by or to besent by the user in the messaging application program to identify one ormore textual data items in the message that can potentially be processedby the one or more other application programs; (c) display messagesanalyzed in (b) to the user by the messaging application, wherein eachtextual data item in the messages identified in step (b) is visuallymarked and selectable by the user; (d) receive an input from the userselecting a textual data item in one of the messages; (e) broadcastinformation on the textual data item selected by the user to the one ormore other application programs; (f) determine independently througheach of the one or more other application programs whether theinformation on the textual data item broadcast in step (e) issemantically relevant to that application program; and (g) when theinformation on the textual data item is determined to be semanticallyrelevant to an application program, process the information on thetextual data item through the application program and display results tothe user.
 11. The system of claim 10, wherein the text in each messagereceived by or to be sent by the user is analyzed in (b) using naturallanguage processing.
 12. The system of claim 11, wherein the one or moretextual data items are identified in (b) by searching for the one ormore textual data items in one or more databases of known entities orconcepts.
 13. The system of claim 12, wherein the information on eachtextual data item comprises a type:value pair associated with thetextual data item in the one or more databases.
 14. The system of claim12, wherein the data comprises financial data, and wherein the entitiesor concepts comprise Issuers, Securities, Investment Managers,Consultants, Employees, Products, or sales activities.
 15. The system ofclaim 14, wherein the one or more other application programs include atleast one of a Price Chart application, a Security Detail application, aSearch application, and a Performance Chart application.
 16. The systemof claim 10, wherein the one or more textual data items are visuallymarked by being underlined or shown in a different color or fontrelative to other text in the messages.
 17. The system of claim 10,wherein the textual data item selectable by the user comprises aclickable hotspot.
 18. The system of claim 10, wherein the computersystem comprises a user-operated device and one or more remote computersconnected to the user-operated device over a communications network, andwherein the application programs execute entirely on the user-operateddevice, partly on the user-operated device and partly on the one or moreremote computers, or entirely on the one or more remote computers.
 19. Ainter-application communication method, comprising the steps of: (a)executing a messaging application program and one or more otherapplication programs on a computer system, each of the messagingapplication program and the one or more other application programsdisplaying data to a user of the computer system, wherein the messagingapplication program enables real-time transmission of messages to andfrom the user; (b) analyzing text in each message received by or to besent by the user in the messaging application program using naturallanguage processing to identify one or more textual data items in themessage that can potentially be processed by the one or more otherapplication programs, and by searching for the one or more textual dataitems in one or more databases of known entities or concepts; (c)tagging the one or more textual data items identified in step (b) byvisually marking the one or more textual data items and making the oneor more textual data items user-selectable in the messages displayed tothe user; (d) receiving an input from the user selecting a textual dataitem in one of the messages; (e) broadcasting information on the textualdata item selected by the user to the one or more other applicationprograms; (f) determining independently through each of the one or moreother application programs whether the information on the textual dataitem broadcast in step (e) is semantically relevant to that applicationprogram; and (g) when the information on the textual data item isdetermined to be semantically relevant to an application program,processing the information on the textual data item through theapplication program and displaying results to the user.
 20. The methodof claim 19, wherein the information on each textual data item comprisesa type:value pair associated with the textual data item in the one ormore databases.